#include <stdio.h>

int main(int argc, const char *argv[])
{
	int s[5] = {10, 20, 30, 40, 50};

	// 对一维数组的数组名取地址 相当于给指针 升维 了
	// 把操作空间是一个元素的指针 升维成了操作空间是一行元素的指针
	// 但是指针p的操作空间只有一个元素的大小 所以 类型不匹配 会报警告
	// int *p = &s;

	// 也可以用下面的办法消除警告
	// 方法1:
	// int *p = (int *)&s; // ----麻烦 不建议用
	// 方法2:
	int (*p)[5] = &s;
	// 但是这种用法 不能直接通过 p[i] 访问数组元素
	// 而必须通过  p[0][i] 的方式访问数组第i个元素 用起来很麻烦 也不建议
	printf("%p\n", p[3]); // s[3]的地址
	printf("%d\n", p[0][3]); // 40

	return 0;
}
